[실기] (PART 10) 애플리케이션 테스트 관리

NOTE

정보처리기사 실기 PART 10 — 테스트 원리, 화이트/블랙박스 테스트, 통합 테스트 등 애플리케이션 테스트 관리 핵심 정리.

📌 개념

  • 소프트웨어 테스트 원리
    • 결함집중 : 오류의 80%는 전체모듈의 20%에서 발견 (파레토법칙)
    • 살충제 패러독스 : 동일 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
    • 오류-부재의 궤변 : 결함이 없다고해서 품질이 높은게 아님
    • 완벽 테스팅은 불가능
    • 초기집중 : 초기에 오류를 찾아야지 후반에 찾으면 걷잡을 수 없는 비용이 듬 ( 요르돈의 법칙 )
    • 정황의존성 : 정황과 도메인에 따라 다르게 테스트
  • 소프트웨어 테스트 산출물
    • 테스트 계획서 : 테스트 범위, 대상시스템 구조 파악 등 테스트 수행을 계획한 문서
    • 테스트 베이시스 : 테스트 설계를 위한 기준이 되는 문서
    • 테스트 케이스 : 테스트를 위한 설계 산출물
    • 테스트 슈트 : 실행 환경에 따라 구분해 놓은 테스트케이스 집합
    • 테스트 시나리오 : 테스트 시나리오가 테스트케이스 여러개를 가질 수 있음
    • 테스트 스크립트 : 테스트 케이스의 실행 순서를 작성
    • 테스트 결과서 : 리포팅 문서
  • 프로그행여부에 따른 분류
    • 정적 테스트 : 실행x, 구조 분석
      • 동료 검토 : 동료 2,3명
      • 워크 스루 : 회의 전
      • 인스펙션 : 다른 전문가들
    • 동적 테스트 : 실행 후 결함 검출
  • 화이트박스 테스트
    • 구문 커버리지 : 모든 명령문 적어도 한번씩 수행
    • 결정 커버리지 : 결정포인트 내의 전체 조건식이 적어도 한번은 참 or 거짓
    • 조건 커버리지 : 개별조건식이 적어도 한번은 참 or 거짓
    • 조건/결정 커버리지 : 결정 + 조건 커버리지
    • 변경 조건/결정 커버리지 : 전체 조건식 + 개별 조건식 참 and 거짓 한번씩, 전체조건식에 독립적으로 영향
    • 다중 조건 커버리지 : 모든 개별 조건식의 가능한 조합 100%
    • 기본 경로 커버리지 : 모든 경로 테스트
    • 제어 흐름 테스트 : 제어 구조 그래프 형태
    • 데이터 흐름 테스트 : 제어 흐름 그래프에 데이터 사용현황 추가
    • 루프 테스트 : 반복 구조에 초점을 맞춰 실시
  • 블랙박스테스트
    • 동등분할 테스트 : 대푯값
    • 경곗값 분석 테스트 : 최솟값 바로 위, 최대치 바로 아래
    • 결정 테이블 테스트 : 조건과 행위를 모두 조합
    • 상태 전이 테스트 : 다른 상태로 전이되는 경우의 수
    • 유스케이스 테스트 : 프로세스 흐름을 기반으로 테스트 케이스 명세화
    • 분류 트리 테스트 : 트리구조로 분석 및 표현
    • 페어와이즈 테스트 : 테스트 데이터 값들 간에 최소한 한번씩 조합
    • 원인-결과 그래프 테스트 : 그래프를 활용하여 출력에 미치는 영향
    • 비교 테스트 : 같은 입력값을 넣어서 동일 출력
    • 오류 추정 테스트 : 개발자가 범할 수 있는 실수 추정
  • 테스트 목적에 따른 분류
    • 회복 테스트 : 고의로 실패 유도
    • 안전 테스트 : 파괴하지 못하도록
    • 성능 테스트 : 시스템 응답시간
      • 부하테스트 : 부하를 계속 증가
      • 강도테스트 : 임계점 이상의 부하
      • 스파이크테스트 : 짧은 시간에 사용자 몰릴 때
      • 내구성테스트 : 오랜시간동안 부하
    • 구조 테스트 : 내부 논리 경로, 복잡도 평가
    • 회귀 테스트 : 오류 제거, 수정한 시스템 오류가 없는지 확인
    • 병행 테스트 : 동일한 데이터 입력후 결과 비교
  • 테스트 종류에 따른 분류
    • 명세 기반 테스트 : 명세서 기반 테스트
    • 구조 기반 테스트 : 내부 논리 흐름에 따라 테스트
    • 경험 기반 테스트 : 테스터의 경험을 토대로 테스트
  • 테스트 커버리지 개념
    • 기능 기반 커버리지 : 애플리케이션 전체 기능을 모수로
    • 라인 커버리지 : 소스 코드 라인 수를 모수로
    • 코드 커버리지 : 일반적인 테스트 커버리지
  • 테스트 오라클
    • 참 오라클 : 기대하는 결과를 생성 (발생된 오류 모두 검출)
    • 샘플링 오라클 : 몇개의 입력값에 대해서만 기대한 결과 제공
    • 휴리스틱 오라클 : 몇개의 입력값에 대해서 기대한 결과 제공 + 휴리스틱(추정)으로 나머지 처리
    • 일관성 검사 : 애플리케이션 변경시 전과 후의 결과값이 동일
  • 테스트 레벨의 종류
    • 단위테스트 (개발) : 사용자 요구사항, 단위 모듈
    • 통합테스트 (설계) : 컴포넌트 간의 상호 작용
    • 시스템 테스트 (기계 명세 분석) : 통합된 단위시스템 정상적 수행 검증
    • 인수 테스트 (요구사항 분석) : 계약상의 요구사항 만족 확인
      • 알파테스트 : 개발자 + 사용자
      • 베타테스트 : 사용자

  • 통합테스트 수행 방법
    • 상향식 테스트
      • 테스트 드라이버
    • 하향식 테스트
      • 테스트 스텁
    • 빅뱅테스트 : 모든 모듈 동시 테스트
    • 샌드위치 테스트 : 하향식 + 상향식
  • 테스트 하네스
    • 테스트를 지원하기 위한 코드와 데이터를 말함
  • 테스트 하네스 구성요소
    • 테스트 드라이버
    • 테스트 스텁
    • 테스트 슈트 : 테스트 대상 컴포넌트나 모듈
    • 테스트 케이스 : 입력값, 실행 조건, 기대 결과 등의 집합
    • 테스트 시나리오
    • 테스트 스크립트 : 자동화된 테스트 실행 절차
    • 목 오브젝트 : 조건부로 사전에 입력
  • 결함관리 프로세스
    • 결함 관리 계획
    • 결함 기록
    • 결함 검토
    • 결함 수정
    • 결함 재확인
    • 결함 상태 추적 및 모니터링
    • 최종 결함 분석 및 보고서 작성
  • 결함 심각도별 분류
    • 치명적결함 : 테스트를 완전히 방해 및 못하게 하는 결함
    • 주요 결함 : 기능 다르게 동작
    • 보통 결함 : 일부 기능 부자연
    • 경미한 결함 : 사용상 불편
    • 단순 결함 : 사소한 버그

  • 애플리케이션 성능 측정 지표
    • 처리량
    • 응답시간
    • 경과시간
    • 자원 사용률
  • 배드코드
    • 외계인 코드 : 아주 오래 or 개발자 x → 유지보수 힘듬
    • 스파게티 코드 : 정상작동 but, 코드 파악은 어려움
    • 알 수 없는 변수명
    • 로직 중복
  • 소스코드 품질 분석 도구 유형
    • 정적 분석 도구 : 코드 실행 x
    • 동적 분석 도구 : 코드 실행
  • 리펙토링 : 기능 변경하지 않고, 복잡한 소스코드 수정